﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using zy7.Models;

namespace zy7.Controllers
{ 
    public class TaskController : Controller
    {
        Model1 model = new Model1();
        // GET: Task
        public ActionResult Index(int uid=0,string Content="")
        {//获取所有用户列表
            var list = model.UserInfo.ToList();
            //在用户列表开始位置添加全部选项
            list.Insert(0,new UserInfo() { name = "全部", uid = 0 });
            //生成下拉框数据，属性名誉实体属性保持一致
            ViewBag.uid = new SelectList(list, "uid", "name");
            //根据条件查询
            var l = model.Task.Where(p => p.Content.Contains(Content) &&
              (uid == 0 || p.uid == uid)).ToList();
            //将数据传递到页面
            return View(l);

        }
    /// <summary>
    /// 添加
    /// </summary>
    /// <returns></returns>
        public ActionResult Create() {
            ViewBag.uid = new SelectList(model.UserInfo,"uid","name");
            return View();
        
        }
        [HttpPost]
        public ActionResult Create(Task task)
        {
            if (ModelState.IsValid) {
                //与用户交互的属性，直接使用传递的属性
                //特殊处理:未与用户交互且默认值无法满足数据库要求的属性必须重新赋值（数据库默认值）
                task.AddTime = DateTime.Now;
                task.TaskState = 1;
                task.FinishedTime =null;

                model.Task.Add(task);
                var res = model.SaveChanges();//添加到数据库
                if (res>0) {//返回原页面
                    return RedirectToAction("Index");
                }
            }
            ViewBag.uid = new SelectList(model.UserInfo, "uid", "name");                       
            return View();

        }
        /// <summary>
        /// 修改
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult Edit(int? id)
        {
            ViewBag.uid = new SelectList(model.UserInfo, "uid", "name");
            if (id ==null)
            {
                //如果参数为空，则返回列表页面
                return RedirectToAction("Index");
            }
            //查询需要修改的数据
            var task = model.Task.FirstOrDefault(p => p.TaskID == id);
                if(task==null) {
                //如果未找到数据，则返回列表页面
                return RedirectToAction("Index");
            }
                //显示原始数据
                //生成下拉框数据，属性名与实体属性保持一致
            ViewBag.uid = new SelectList(model.UserInfo, "uid", "name");
            return View(task);
        }
        /// <summary>
        /// 处理修改请求
        /// </summary>
        /// <param name="task"></param>
        /// <returns></returns>
        [HttpPost]
        public ActionResult Edit(Task task)
        {//判断前端传递过来的数据是否满足注释属性的验证规则
            if (ModelState.IsValid) 
            {//查询需要修改的数据
                var list = model.Task.FirstOrDefault(p => p.TaskID == task.TaskID);
                if (list==null) {
                    //如果未找到数据，则返回列表页面
                    return RedirectToAction("Index");
                }
                //修改属性值，只修改前台传回来的数据；其他属性数据，需根据业务需求修改
                list.Content= task.Content;
                list.FinishedTime = task.FinishedTime;
                list.TaskPriority = task.TaskPriority;
                list.uid = task.uid;
                //将更改保存到数据库
                var u = model.SaveChanges();
                if (u>0) {
                    //如果添加成功，返回列表页面
                    return RedirectToAction("Index");
                }
            
            }
            //显示数据原始数据
            //生成下拉框数据，属性名与实体属性保持一致
            ViewBag.uid = new SelectList(model.UserInfo, "uid", "name");
            return View(task);
        }
        /// <summary>
        /// 详情
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult Details(int? id)
        {
            if (id == null)
            {//如果参数为null，则返回列表页面
                return RedirectToAction("Index");
            }
            //查询需要修改的数据
            var task = model.Task.FirstOrDefault(p => p.TaskID == id);
            if (task == null)
            {
                //如果未找到数据，则返回列表页面
                return RedirectToAction("Index");
            }
            //显示原始数据
            return View(task);
        }
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        [HttpPost]
       
        public ActionResult Delete(int? id) 
        {
            if (id==null) {
                //如果参数为空，则返回false
                return Json(false);
            }
            //查询需要删除的数据
            var task = model.Task.FirstOrDefault(p => p.TaskID == id);
            if (task==null) {
                //如果未找到数据，则返回false
                return Json(false);
            
            }
            //从数据集中中删除数据
            model.Task.Remove(task);
            //将更改保存到数据库
            var u = model.SaveChanges();
            //返回删除结果
            return Json(u>0);
        }
    }
}